package com.treasure.service.wechat.service;

import com.alibaba.fastjson.JSONObject;
import com.treasure.service.domain.AccessToken;
import com.treasure.service.wechat.common.WxUser;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.UnsupportedEncodingException;
import java.security.NoSuchAlgorithmException;
import java.util.List;

/**
* @ClassName: WechatService
* @Description: TODO(微信相关业务 )
* @author <a href="mailto:125671254@qq.com">Pan Xinwen</a>panxinwen
* @date 2018年5月29日 下午21:51:01
*
 */
public interface WechatService {

	/**
	 * 获取微信token
	 */
    public AccessToken getAccess_token();

    /**
     * 定时更新Access_token
     */
    public void updateAccess_token();

    /**
     * 用户授权
    * @Title: snsapibase
    * @Description: TODO(这里用一句话描述这个方法的作用)
    * @param
    * @return void    返回类型
    * @throws
     */
    public void snsapibase(String redirect_uri, String redirect_code, HttpServletResponse response);

    /**
    * @Title: wxUserInfo
    * @Description: TODO(获取用户微信信息)
    * @param @param openid    设定文件
    * @return void    返回类型
    * @throws
     */
    public WxUser wxUserInfo(String openid, String access_token) throws UnsupportedEncodingException;

    /**
     * 授权回调处理
    * @Title: redirect
    * @Description: TODO(这里用一句话描述这个方法的作用)
    * @param @param request    设定文件
    * @return void    返回类型
    * @throws
     */
	public WxUser redirect(HttpServletRequest request);


	/**
	 * 监听微信用户事件
	* @Title: wxListener
	* @Description: TODO(这里用一句话描述这个方法的作用)
	* @param @param request
	* @param @return    设定文件
	* @return String    返回类型
	* @throws
	 */
	public String wxListener(String signature, String timestamp,
                             String nonce, String echostr) throws NoSuchAlgorithmException;

	/**
	 * 接收微信推送
	* @Title: processRequest
	* @Description: TODO(这里用一句话描述这个方法的作用)
	* @param @param request
	* @param @return    设定文件
	* @return String    返回类型
	* @throws
	 */
	public String processRequest(HttpServletRequest request);

	/**
	 * 获取推广二维码
	 * @param selfInviteCode
	 * @return
	 */
    String getQRCode(String selfInviteCode);

    /**
	 * 发红包
	* @Title: sendRedPack
	* @Description: TODO()
	* @return void
	 */
//	public void sendRedPack(String openid, int money) throws Exception;

	/**
	 * 创建分享图片
	 * @return
	 */
	public String createShareImg(Integer type,String selfInviteCode);
}
